/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package negocio;

import java.util.ArrayList;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

import modelo.Entrega;

import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.criterion.Example;
import org.hibernate.criterion.MatchMode;



public class EntregaNegocio  {
    
    private static EntityManagerFactory emf = 
            Persistence.createEntityManagerFactory("Tranex");
    private static EntityManager em = emf.createEntityManager();

    public static void iniciarTransacao() {
        em.getTransaction().begin();
    }
    public static void finalizarTransacao() {
        em.getTransaction().commit();
    }
        public static void voltarTransacao () {
    	em.getTransaction().rollback();
    }
    
    public static void limpar() {
        em.clear();
    }
    public static void gravar(Entrega entrega) {
        
        em.persist(entrega);
    }
    
    public static void atualiza(Entrega entrega) {
        
        em.merge(entrega);
    }
    
    public static void excluir(Entrega entrega) {
        em.remove(entrega);
    }
    
    public static Entrega findByPk(Integer codEntrega) {
        return em.find(Entrega.class, codEntrega);
    }
    
    public static ArrayList<Entrega> findBy(Entrega entrega){
    	ArrayList<Entrega> entregas = new ArrayList<Entrega>();
    	Session session = HibernateUtil.getSessionFactory().openSession();
    	Example parametro = Example.create(entrega)
    	.excludeZeroes() //exclude zero valued properties
    	.ignoreCase() //perform case insensitive string comparisons
    	.enableLike(MatchMode.ANYWHERE)//use like for string comparisons
    	; 

      	  Criteria criteria = session.createCriteria(entrega.getClass()).add( parametro);
    	
    	  entregas = (ArrayList<Entrega>) criteria.list();
    	return entregas;
    	
    }
    
    public static ArrayList<Entrega> findAll(){
    	ArrayList<Entrega> entregas = (ArrayList<Entrega>) em.createQuery("from Entrega entrega ORDER BY entrega.codEntrega").getResultList();
    	return entregas;
    	
    	
    }
    
    public static ArrayList<Entrega> findAll(int codEntrega){
    	ArrayList<Entrega> entregas = (ArrayList<Entrega>) em.createQuery("from Entrega entrega where entrega.codEntrega="+codEntrega+"ORDER BY entrega.codEntrega").getResultList();
    	return entregas;
    }
}
